#include <cstdio>
#include <algorithm>
#include <vector>
#define bug printf("Bug\n");
using namespace std;
const int N=1e5+50;
int a[N],b[N],t[N];
int n;
int main(void){
    scanf("%d",&n);
    for(int i=0;i<n-1;i++){
        scanf("%d",&a[i]);
    }
    for(int i=0;i<n-1;i++){
        scanf("%d",&b[i]);
    }
    bool flag=false;
    for(int i=0;i<n-1;i++){
        if(a[i]<b[i]){
            flag=true;
            break;
        }
    }
    if(flag){
        printf("NO\n");
        return 0;
    }
    bool suc=false;
    //枚举第一位
    for(int i=0;i<4;i++){
        //printf("Iu::%d\n",i);
        t[0]=i;
        int j=0;
        for(;j<n-1;j++){
            //printf("j:::%d\n",j);
            bool flag=false;
            for(int k=0;k<4;k++){
                //printf("%d %d %d %d %d %d %d\n",k,k|t[j],k&t[j],a[j],b[j],(k|t[j])==a[j],(k&t[j])==b[j]);
                if((k|t[j])==a[j] && (k&t[j])==b[j]){
                    t[j+1]=k;
                    flag=true;
                    break;
                }
            }
            if(!flag){
                //printf("%d\n",i);
                break;
            }
        }
        if(j==n-1){
            suc=true;
            break;
        }
    }
    if(!suc){
        printf("NO\n");
        return 0;
    }
    printf("YES\n");
    printf("%d",t[0]);
    for(int i=1;i<n;i++){
        printf(" %d",t[i]);
    }
    printf("\n");
    return 0;
}